// import 'package:flutter/material.dart';
// import 'package:provider/provider.dart';
// import '../../providers/bill_provider.dart';
// import '../../models/bill.dart';
// import '../../models/bill_item.dart';
// import '../../models/product.dart';
// import '../../core/app_theme.dart';
// import '../../core/snackbar_helper.dart';
// import '../../providers/product_provider.dart';

// class EditBillScreen extends StatefulWidget {
//   final int billId;

//   const EditBillScreen({super.key, required this.billId});

//   @override
//   State<EditBillScreen> createState() => _EditBillScreenState();
// }

// class _EditBillScreenState extends State<EditBillScreen> {
//   Bill? _bill;
//   List<BillItem> _billItems = [];
//   List<BillModification> _modificationHistory = [];
//   bool _isLoading = true;

//   @override
//   void initState() {
//     super.initState();
//     _loadBillData();
//   }

//   Future<void> _loadBillData() async {
//     try {
//       final billProvider = Provider.of<BillProvider>(context, listen: false);
//       final bill = await billProvider.getBillById(widget.billId);
//       final billItems = await billProvider.getBillItems(widget.billId);
//       final modificationHistory = await billProvider.getBillModificationHistory(widget.billId);
      
//       setState(() {
//         _bill = bill;
//         _billItems = billItems;
//         _modificationHistory = modificationHistory;
//         _isLoading = false;
//       });
//     } catch (e) {
//       SnackbarHelper.showError(context, '加载账单失败: $e');
//       setState(() {
//         _isLoading = false;
//       });
//     }
//   }

//   // ========== 补货功能 ==========
//   void _addSupplementItem() async {
//     final productProvider = Provider.of<ProductProvider>(context, listen: false);
//     await productProvider.loadProductsByRestaurant(_bill!.restaurantId);
    
//     final products = productProvider.products;
    
//     if (products.isEmpty) {
//       SnackbarHelper.showError(context, '该饭店暂无商品');
//       return;
//     }
    
//     Product? selectedProduct;
//     int quantity = 1;
    
//     showDialog(
//       context: context,
//       builder: (ctx) => StatefulBuilder(
//         builder: (context, setState) {
//           return AlertDialog(
//             title: const Text('补货'),
//             content: Column(
//               mainAxisSize: MainAxisSize.min,
//               children: [
//                 DropdownButtonFormField<Product>(
//                   decoration: const InputDecoration(labelText: '选择商品'),
//                   value: selectedProduct,
//                   onChanged: (Product? newValue) {
//                     setState(() => selectedProduct = newValue);
//                   },
//                   items: products.map((Product product) {
//                     return DropdownMenuItem<Product>(
//                       value: product,
//                       child: Text('${product.name} (${product.spec}) - ¥${product.currentPrice}'),
//                     );
//                   }).toList(),
//                 ),
//                 const SizedBox(height: 16),
//                 Row(
//                   mainAxisAlignment: MainAxisAlignment.center,
//                   children: [
//                     IconButton(
//                       icon: const Icon(Icons.remove),
//                       onPressed: () {
//                         if (quantity > 1) {
//                           setState(() => quantity--);
//                         }
//                       },
//                     ),
//                     Text(
//                       quantity.toString(),
//                       style: const TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
//                     ),
//                     IconButton(
//                       icon: const Icon(Icons.add),
//                       onPressed: () {
//                         setState(() => quantity++);
//                       },
//                     ),
//                   ],
//                 ),
//                 Text('总金额: ¥${(selectedProduct?.currentPrice ?? 0) * quantity}'),
//               ],
//             ),
//             actions: [
//               TextButton(
//                 onPressed: () => Navigator.of(ctx).pop(),
//                 child: const Text('取消'),
//               ),
//               ElevatedButton(
//                 onPressed: selectedProduct == null ? null : () {
//                   Navigator.of(ctx).pop();
//                   _executeSupplement(selectedProduct!, quantity);
//                 },
//                 child: const Text('确认补货'),
//               ),
//             ],
//           );
//         },
//       ),
//     );
//   }

//   void _executeSupplement(Product product, int quantity) async {
//     try {
//       final billProvider = Provider.of<BillProvider>(context, listen: false);
      
//       // 检查是否已存在该商品
//       final existingItem = _billItems.firstWhere(
//         (item) => item.productId == product.id,
//         orElse: () => BillItem(
//           billId: widget.billId,
//           productId: -1, // 不会匹配任何真实商品
//           productName: '',
//           productSpec: '',
//           unitPrice: 0,
//           quantity: 0,
//           subtotal: 0,
//         ),
//       );

//       if (existingItem.productId != -1) {
//         // 商品已存在，更新数量
//         final updatedItem = existingItem.copyWith(
//           quantity: existingItem.quantity + quantity,
//           subtotal: existingItem.unitPrice * (existingItem.quantity + quantity),
//         );
        
//         await billProvider.updateBillItem(updatedItem);
        
//         // 记录修改历史
//         final modification = BillModification(
//           timestamp: DateTime.now(),
//           type: 'supplement',
//           description: '补货: ${product.name} × $quantity，补货后总数: ${updatedItem.quantity}',
//         );
        
//         await billProvider.addModificationHistory(widget.billId, modification);
//       } else {
//         // 新商品，添加新项
//         final supplementItem = BillItem(
//           billId: widget.billId,
//           productId: product.id!,
//           productName: product.name,
//           productSpec: product.spec,
//           unitPrice: product.currentPrice,
//           quantity: quantity,
//           subtotal: product.currentPrice * quantity,
//         );

//         await billProvider.addBillItem(supplementItem);
        
//         // 记录修改历史
//         final modification = BillModification(
//           timestamp: DateTime.now(),
//           type: 'add_item',
//           description: '添加商品: ${product.name} × $quantity，金额: ¥${supplementItem.subtotal.toStringAsFixed(2)}',
//         );
        
//         await billProvider.addModificationHistory(widget.billId, modification);
//       }
      
//       // 重新计算并更新总金额
//       await _updateBillTotalAmount();
      
//       SnackbarHelper.showSuccess(context, '补货操作成功');
//       _loadBillData();
//     } catch (e) {
//       SnackbarHelper.showError(context, '补货失败: $e');
//     }
//   }

//   // ========== 退货功能 ==========
//   void _showReturnDialog(BillItem item) {
//     final TextEditingController quantityController = TextEditingController(text: '1');
//     final GlobalKey<FormState> _formKey = GlobalKey<FormState>();
    
//     showDialog(
//       context: context,
//       builder: (ctx) => AlertDialog(
//         title: const Text('退货'),
//         content: Form(
//           key: _formKey,
//           child: Column(
//             mainAxisSize: MainAxisSize.min,
//             children: [
//               Text('商品: ${item.productName}'),
//               Text('规格: ${item.productSpec}'),
//               Text('当前数量: ${item.quantity}'),
//               Text('单价: ¥${item.unitPrice}'),
//               const SizedBox(height: 16),
//               TextFormField(
//                 controller: quantityController,
//                 decoration: const InputDecoration(
//                   labelText: '退货数量',
//                   border: OutlineInputBorder(),
//                 ),
//                 keyboardType: TextInputType.number,
//                 validator: (value) {
//                   if (value == null || value.isEmpty) {
//                     return '请输入数量';
//                   }
//                   final n = int.tryParse(value);
//                   if (n == null) {
//                     return '请输入有效的数字';
//                   }
//                   if (n <= 0) {
//                     return '数量必须大于0';
//                   }
//                   if (n > item.quantity) {
//                     return '不能超过当前数量';
//                   }
//                   return null;
//                 },
//               ),
//               const SizedBox(height: 8),
//               Text(
//                 '退款金额: ¥${(item.unitPrice * int.parse(quantityController.text)).toStringAsFixed(2)}',
//                 style: const TextStyle(fontSize: 16, fontWeight: FontWeight.bold, color: Colors.red),
//               ),
//             ],
//           ),
//         ),
//         actions: [
//           TextButton(
//             onPressed: () => Navigator.of(ctx).pop(),
//             child: const Text('取消'),
//           ),
//           ElevatedButton(
//             onPressed: () {
//               if (_formKey.currentState!.validate()) {
//                 final returnQuantity = int.parse(quantityController.text);
//                 Navigator.of(ctx).pop();
//                 _executeReturn(item, returnQuantity);
//               }
//             },
//             style: ElevatedButton.styleFrom(backgroundColor: Colors.orange),
//             child: const Text('确认退货'),
//           ),
//         ],
//       ),
//     );
//   }

//   void _executeReturn(BillItem originalItem, int returnQuantity) async {
//     try {
//       final billProvider = Provider.of<BillProvider>(context, listen: false);
      
//       // 直接修改原账单项的数量和金额
//       final updatedItem = originalItem.copyWith(
//         quantity: originalItem.quantity - returnQuantity,
//         subtotal: originalItem.unitPrice * (originalItem.quantity - returnQuantity),
//       );
      
//       // 更新数据库中的账单项
//       await billProvider.updateBillItem(updatedItem);
      
//       // 记录修改历史
//       final modification = BillModification(
//         timestamp: DateTime.now(),
//         type: 'return',
//         description: '退货: ${originalItem.productName} × $returnQuantity，退款: ¥${(originalItem.unitPrice * returnQuantity).toStringAsFixed(2)}，剩余: ${updatedItem.quantity}',
//       );
      
//       await billProvider.addModificationHistory(widget.billId, modification);
      
//       // 重新计算并更新总金额
//       await _updateBillTotalAmount();
      
//       SnackbarHelper.showSuccess(context, '退货操作成功');
//       _loadBillData();
//     } catch (e) {
//       SnackbarHelper.showError(context, '退货失败: $e');
//     }
//   }

//   // ========== 总金额更新 ==========
//   Future<void> _updateBillTotalAmount() async {
//     try {
//       final billProvider = Provider.of<BillProvider>(context, listen: false);
      
//       // 重新计算总金额
//       final newTotalAmount = await billProvider.recalculateBillTotal(widget.billId);
      
//       // 更新账单总金额
//       final updatedBill = _bill!.copyWith(totalAmount: newTotalAmount);
//       await billProvider.updateBill(updatedBill);
      
//       // 更新本地状态
//       setState(() {
//         _bill = updatedBill;
//       });
      
//     } catch (e) {
//       print('更新总金额失败: $e');
//       SnackbarHelper.showError(context, '更新总金额失败: $e');
//     }
//   }

//   // ========== 操作记录显示 ==========
//   void _showModificationHistory() {
//     if (_modificationHistory.isEmpty) {
//       SnackbarHelper.showSuccess(context, '暂无操作记录');
//       return;
//     }
    
//     showDialog(
//       context: context,
//       builder: (ctx) => AlertDialog(
//         title: const Text('操作记录'),
//         content: SizedBox(
//           width: double.maxFinite,
//           height: 400,
//           child: ListView.builder(
//             shrinkWrap: true,
//             itemCount: _modificationHistory.length,
//             itemBuilder: (context, index) {
//               final history = _modificationHistory.reversed.toList()[index];
//               return Card(
//                 margin: const EdgeInsets.symmetric(vertical: 4),
//                 child: ListTile(
//                   leading: Container(
//                     width: 8,
//                     height: 8,
//                     decoration: BoxDecoration(
//                       color: _getModificationColor(history.type),
//                       shape: BoxShape.circle,
//                     ),
//                   ),
//                   title: Text(
//                     history.description,
//                     style: const TextStyle(fontSize: 14),
//                   ),
//                   subtitle: Text(
//                     _formatDate(history.timestamp),
//                     style: const TextStyle(fontSize: 12),
//                   ),
//                   trailing: Text(
//                     history.operator,
//                     style: const TextStyle(fontSize: 12, color: Colors.grey),
//                   ),
//                 ),
//               );
//             },
//           ),
//         ),
//         actions: [
//           TextButton(
//             onPressed: () => Navigator.of(ctx).pop(),
//             child: const Text('关闭'),
//           ),
//         ],
//       ),
//     );
//   }

//   // ========== UI构建方法 ==========
//   @override
//   Widget build(BuildContext context) {
//     return Scaffold(
//       appBar: AppBar(
//         title: const Text('编辑账单', style: AppTheme.titleLarge),
//         actions: [
//           IconButton(
//             icon: const Icon(Icons.history),
//             onPressed: _showModificationHistory,
//             tooltip: '操作记录',
//           ),
//         ],
//       ),
//       body: _isLoading
//           ? const Center(child: CircularProgressIndicator())
//           : _bill == null
//               ? const Center(child: Text('账单不存在'))
//               : _buildEditBillContent(),
//     );
//   }

//   Widget _buildEditBillContent() {
//     return SingleChildScrollView(
//       padding: const EdgeInsets.all(16.0),
//       child: Column(
//         crossAxisAlignment: CrossAxisAlignment.start,
//         children: [
//           // 账单基本信息
//           Card(
//             child: Padding(
//               padding: const EdgeInsets.all(16.0),
//               child: Column(
//                 crossAxisAlignment: CrossAxisAlignment.start,
//                 children: [
//                   Row(
//                     mainAxisAlignment: MainAxisAlignment.spaceBetween,
//                     children: [
//                       Text(
//                         _bill!.restaurantName,
//                         style: const TextStyle(
//                           fontSize: 20,
//                           fontWeight: FontWeight.bold,
//                         ),
//                       ),
//                       Container(
//                         padding: const EdgeInsets.symmetric(horizontal: 8, vertical: 4),
//                         decoration: BoxDecoration(
//                           color: _getStatusColor(_bill!.status).withOpacity(0.1),
//                           borderRadius: BorderRadius.circular(4),
//                           border: Border.all(color: _getStatusColor(_bill!.status)),
//                         ),
//                         child: Text(
//                           _getStatusText(_bill!.status),
//                           style: TextStyle(
//                             color: _getStatusColor(_bill!.status),
//                             fontWeight: FontWeight.bold,
//                           ),
//                         ),
//                       ),
//                     ],
//                   ),
//                   const SizedBox(height: 8),
//                   Text('时间: ${_formatDate(_bill!.billDate)}'),
//                   const SizedBox(height: 8),
//                   Text('总金额: ¥${_bill!.totalAmount.toStringAsFixed(2)}'),
//                   const SizedBox(height: 8),
//                   Text('状态: ${_getStatusText(_bill!.status)}'),
//                   if (_bill!.notes != null && _bill!.notes!.isNotEmpty) ...[
//                     const SizedBox(height: 8),
//                     Text('备注: ${_bill!.notes}'),
//                   ],
//                 ],
//               ),
//             ),
//           ),
          
//           const SizedBox(height: 16),
          
//           // 操作按钮
//           if (_bill!.status == 'pending') _buildActionButtons(),
          
//           const SizedBox(height: 16),
          
//           // 账单项目列表
//           _buildBillItemsList(),
//         ],
//       ),
//     );
//   }

//   Widget _buildActionButtons() {
//     return Card(
//       child: Padding(
//         padding: const EdgeInsets.all(16.0),
//         child: Column(
//           crossAxisAlignment: CrossAxisAlignment.start,
//           children: [
//             const Text(
//               '操作',
//               style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
//             ),
//             const SizedBox(height: 12),
//             Wrap(
//               spacing: 12,
//               runSpacing: 12,
//               children: [
//                 ElevatedButton.icon(
//                   onPressed: _addSupplementItem,
//                   icon: const Icon(Icons.add),
//                   label: const Text('补货'),
//                   style: ElevatedButton.styleFrom(
//                     backgroundColor: Colors.green,
//                     foregroundColor: Colors.white,
//                   ),
//                 ),
//                 ElevatedButton.icon(
//                   onPressed: () => _showModificationHistory(),
//                   icon: const Icon(Icons.history),
//                   label: const Text('操作记录'),
//                   style: ElevatedButton.styleFrom(
//                     backgroundColor: Colors.grey,
//                     foregroundColor: Colors.white,
//                   ),
//                 ),
//               ],
//             ),
//           ],
//         ),
//       ),
//     );
//   }

//   Widget _buildBillItemsList() {
//     // 过滤掉数量为0的项目
//     final displayItems = _billItems.where((item) => item.quantity != 0).toList();
    
//     return Card(
//       child: Padding(
//         padding: const EdgeInsets.all(16.0),
//         child: Column(
//           crossAxisAlignment: CrossAxisAlignment.start,
//           children: [
//             const Text(
//               '账单项目',
//               style: TextStyle(fontSize: 18, fontWeight: FontWeight.bold),
//             ),
//             const SizedBox(height: 8),
//             if (displayItems.isEmpty)
//               const Padding(
//                 padding: EdgeInsets.all(16.0),
//                 child: Text(
//                   '暂无商品项目',
//                   style: TextStyle(color: Colors.grey),
//                   textAlign: TextAlign.center,
//                 ),
//               )
//             else
//               ...displayItems.map((item) => _buildBillItem(item)).toList(),
//           ],
//         ),
//       ),
//     );
//   }

//   Widget _buildBillItem(BillItem item) {
//     return Card(
//       margin: const EdgeInsets.symmetric(vertical: 4),
//       child: ListTile(
//         contentPadding: const EdgeInsets.symmetric(horizontal: 16, vertical: 8),
//         leading: CircleAvatar(
//           backgroundColor: Colors.blue,
//           child: Text(
//             item.quantity.toString(),
//             style: const TextStyle(color: Colors.white, fontWeight: FontWeight.bold),
//           ),
//         ),
//         title: Text(
//           item.productName,
//           style: const TextStyle(fontWeight: FontWeight.bold),
//         ),
//         subtitle: Column(
//           crossAxisAlignment: CrossAxisAlignment.start,
//           children: [
//             const SizedBox(height: 4),
//             Text('规格: ${item.productSpec}'),
//             const SizedBox(height: 2),
//             Text('单价: ¥${item.unitPrice.toStringAsFixed(2)}'),
//           ],
//         ),
//         trailing: ConstrainedBox(
//           constraints: BoxConstraints(
//             maxWidth: 120, // 限制最大宽度
//           ),
//           child: Row(
//             mainAxisSize: MainAxisSize.min,
//             children: [
//               Text(
//                 '¥${item.subtotal.toStringAsFixed(2)}',
//                 style: TextStyle(
//                   fontSize: 14, // 减小字体
//                   fontWeight: FontWeight.bold,
//                   color: Colors.green,
//                 ),
//               ),
//               if (_bill!.status == 'pending') ...[
//                 const SizedBox(width: 4),
//                 IconButton(
//                   icon: const Icon(Icons.undo, color: Colors.orange, size: 18),
//                   onPressed: () => _showReturnDialog(item),
//                   tooltip: '退货',
//                   padding: EdgeInsets.zero, // 移除内边距
//                   constraints: BoxConstraints(
//                     minWidth: 36,
//                     minHeight: 36,
//                   ),
//                 ),
//               ],
//             ],
//           ),
//         ),
//       ),
//     );
//   }

//   // ========== 工具方法 ==========
//   Color _getModificationColor(String type) {
//     switch (type) {
//       case 'create': return Colors.green;
//       case 'update': return Colors.blue;
//       case 'add_item': return Colors.green;
//       case 'supplement': return Colors.green;
//       case 'return': return Colors.orange;
//       default: return Colors.grey;
//     }
//   }

//   Color _getStatusColor(String status) {
//     switch (status) {
//       case 'pending': return Colors.orange;
//       case 'completed': return Colors.green;
//       case 'cancelled': return Colors.red;
//       default: return Colors.grey;
//     }
//   }

//   String _getStatusText(String status) {
//     switch (status) {
//       case 'pending': return '未完成';
//       case 'completed': return '已完成';
//       case 'cancelled': return '已取消';
//       default: return '未知';
//     }
//   }

//   String _formatDate(DateTime date) {
//     return '${date.year}-${date.month.toString().padLeft(2, '0')}-${date.day.toString().padLeft(2, '0')} ${date.hour.toString().padLeft(2, '0')}:${date.minute.toString().padLeft(2, '0')}';
//   }
// }